{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "d885824b",
   "metadata": {},
   "outputs": [],
   "source": [
    "from itertools import combinations\n",
    "\n",
    "import numpy as np\n",
    "import pandas as pd\n",
    "from scipy import stats\n",
    "import statsmodels.api as sm\n",
    "\n",
    "import matplotlib.pyplot as plt\n",
    "plt.style.use('fivethirtyeight')\n",
    "\n",
    "import graphviz"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "7a2494ed",
   "metadata": {},
   "outputs": [],
   "source": [
    "COLORS = [\n",
    "    '#00B0F0',\n",
    "    '#FF0000'\n",
    "]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "a0fd06fd",
   "metadata": {},
   "source": [
    "# Chapter 06\n",
    "\n",
    "This chapter formalizes the concept of $d$-separation and introduces the concept of estimand. We learn how $d$-separation in a graph translates to regression analysis. Next, we focus on estimands. We define basic yet powerful estimands: back-door and front-door criteria. Next, we introduce other criteria and the concept of Pearl’s $do$-calculus. Finally, we translate our new knowledge into Python code and perform a couple of exercises to solidify our new knowledge."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "663cd1b3",
   "metadata": {},
   "source": [
    "## Visualizations"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "id": "321fb278",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"278pt\" height=\"44pt\"\n",
       " viewBox=\"0.00 0.00 278.00 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-40 274,-40 274,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;B -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.25,-18C67.43,-18 83.44,-18 97.73,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"97.76,-21.5 107.76,-18 97.76,-14.5 97.76,-21.5\"/>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- B&#45;&gt;Y -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>B&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M162.25,-18C175.43,-18 191.44,-18 205.73,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"205.76,-21.5 215.76,-18 205.76,-14.5 205.76,-21.5\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x250ea17dbe0>"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['X', 'B', 'Y']\n",
    "positions = ['1,0!', '2.5,0!', '4,0!']\n",
    "\n",
    "edges = ['XB', 'BY']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(f'img/ch_06_d_sep_00')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "id": "931fb8b2",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"278pt\" height=\"44pt\"\n",
       " viewBox=\"0.00 0.00 278.00 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-40 274,-40 274,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;B -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.25,-18C67.43,-18 83.44,-18 97.73,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"97.76,-21.5 107.76,-18 97.76,-14.5 97.76,-21.5\"/>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- Y&#45;&gt;B -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>Y&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.75,-18C202.57,-18 186.56,-18 172.27,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"172.24,-14.5 162.24,-18 172.24,-21.5 172.24,-14.5\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x250ea17de80>"
      ]
     },
     "execution_count": 18,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['X', 'B', 'Y']\n",
    "positions = ['1,0!', '2.5,0!', '4,0!']\n",
    "\n",
    "edges = ['XB', 'YB']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(f'img/ch_06_d_sep_01')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "id": "5d7c9de1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"206pt\" height=\"116pt\"\n",
       " viewBox=\"0.00 0.00 206.00 116.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-112 202,-112 202,4 -4,4\"/>\n",
       "<!-- A -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">A</text>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;Y -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>A&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M27,-71.83C27,-64.13 27,-54.97 27,-46.42\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-46.41 27,-36.41 23.5,-46.41 30.5,-46.41\"/>\n",
       "</g>\n",
       "<!-- X -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"171\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;A -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>X&#45;&gt;A</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M143.91,-90C121.53,-90 89.5,-90 64.63,-90\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"64.45,-86.5 54.45,-90 64.45,-93.5 64.45,-86.5\"/>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;B -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M171,-71.83C171,-64.13 171,-54.97 171,-46.42\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"174.5,-46.41 171,-36.41 167.5,-46.41 174.5,-46.41\"/>\n",
       "</g>\n",
       "<!-- Y&#45;&gt;B -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>Y&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.09,-18C76.47,-18 108.5,-18 133.37,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"133.55,-21.5 143.55,-18 133.55,-14.5 133.55,-21.5\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x250ea1a88b0>"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['A', 'X', 'B', 'Y']\n",
    "positions = ['1,1!', '3,1!', '3,0!', '1, 0!']\n",
    "\n",
    "edges = ['XB', 'YB', 'XA', 'AY']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(f'img/ch_06_d_sep_02')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "id": "e0c9c2b1",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"386pt\" height=\"44pt\"\n",
       " viewBox=\"0.00 0.00 386.00 44.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 40)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-40 382,-40 382,4 -4,4\"/>\n",
       "<!-- A -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"135\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">A</text>\n",
       "</g>\n",
       "<!-- X -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;A -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;A</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.25,-18C67.43,-18 83.44,-18 97.73,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"97.76,-21.5 107.76,-18 97.76,-14.5 97.76,-21.5\"/>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- B&#45;&gt;A -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>B&#45;&gt;A</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M215.75,-18C202.57,-18 186.56,-18 172.27,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"172.24,-14.5 162.24,-18 172.24,-21.5 172.24,-14.5\"/>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"351\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"351\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- B&#45;&gt;Y -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>B&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M270.25,-18C283.43,-18 299.44,-18 313.73,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"313.76,-21.5 323.76,-18 313.76,-14.5 313.76,-21.5\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x250ea1a8dc0>"
      ]
     },
     "execution_count": 34,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['A', 'X', 'B', 'Y']\n",
    "positions = ['1.5,0!', '0,0!', '3,0!', '4.5,0!']\n",
    "\n",
    "edges = ['XA', 'BA', 'BY']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(f'img/ch_06_d_sep_03')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "id": "1f81a7cf",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"206pt\" height=\"224pt\"\n",
       " viewBox=\"0.00 0.00 206.00 224.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 220)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-220 202,-220 202,4 -4,4\"/>\n",
       "<!-- A -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"99\" cy=\"-198\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"99\" y=\"-194.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">A</text>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;Y -->\n",
       "<g id=\"edge5\" class=\"edge\">\n",
       "<title>A&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M91.97,-180.41C79.35,-148.88 52.81,-82.52 37.85,-45.12\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"40.92,-43.38 33.96,-35.39 34.42,-45.98 40.92,-43.38\"/>\n",
       "</g>\n",
       "<!-- X -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"171\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;A -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;A</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M159.75,-106.88C147.97,-124.55 129.33,-152.51 115.8,-172.8\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"112.81,-170.98 110.17,-181.24 118.63,-174.86 112.81,-170.98\"/>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"171\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"171\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;B -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>X&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M171,-71.83C171,-64.13 171,-54.97 171,-46.42\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"174.5,-46.41 171,-36.41 167.5,-46.41 174.5,-46.41\"/>\n",
       "</g>\n",
       "<!-- C -->\n",
       "<g id=\"node5\" class=\"node\">\n",
       "<title>C</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">C</text>\n",
       "</g>\n",
       "<!-- C&#45;&gt;B -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>C&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M42.14,-146.86C67.46,-121.54 118.54,-70.46 148.22,-40.78\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"151.03,-42.91 155.63,-33.37 146.09,-37.97 151.03,-42.91\"/>\n",
       "</g>\n",
       "<!-- C&#45;&gt;Y -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>C&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M27,-143.76C27,-119.2 27,-75.25 27,-46.35\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"30.5,-46.09 27,-36.09 23.5,-46.09 30.5,-46.09\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x250ea1a80d0>"
      ]
     },
     "execution_count": 26,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['A', 'X', 'B', 'Y', 'C']\n",
    "positions = ['2,2.5!', '3,1!', '3,0!', '1, 0!', '1,2!']\n",
    "\n",
    "edges = ['XA', 'XB', 'CB', 'CY', 'AY']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(f'img/ch_06_d_sep_04')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "201a5f63",
   "metadata": {},
   "source": [
    "## Estimand first!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 74,
   "id": "f25f692d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Commute example\n",
    "t = [22.1, 23.7, 25.2, 20.0, 21.8]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 75,
   "id": "10ee821b",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "22.56"
      ]
     },
     "execution_count": 75,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.mean(t)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "ac1a4a2e",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"281pt\" height=\"98pt\"\n",
       " viewBox=\"0.00 0.00 280.90 98.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 94)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-94 276.9,-94 276.9,4 -4,4\"/>\n",
       "<!-- ICE -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>ICE</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">ICE</text>\n",
       "</g>\n",
       "<!-- TMP -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>TMP</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-72\" rx=\"29.8\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"135\" y=\"-68.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">TMP</text>\n",
       "</g>\n",
       "<!-- TMP&#45;&gt;ICE -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>TMP&#45;&gt;ICE</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M111.83,-60.42C96.04,-52.52 74.95,-41.98 57.76,-33.38\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"59.17,-30.17 48.66,-28.83 56.04,-36.43 59.17,-30.17\"/>\n",
       "</g>\n",
       "<!-- ACC -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>ACC</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"29.8\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">ACC</text>\n",
       "</g>\n",
       "<!-- TMP&#45;&gt;ACC -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>TMP&#45;&gt;ACC</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M158.17,-60.42C173.54,-52.73 193.93,-42.53 210.87,-34.07\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"212.49,-37.17 219.87,-29.57 209.36,-30.91 212.49,-37.17\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x20aac33a2b0>"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['ICE', 'TMP', 'ACC']\n",
    "positions = ['0,0!', '1.5,.75!', '3,0!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edge('TMP', 'ICE')\n",
    "graph.edge('TMP', 'ACC')\n",
    "\n",
    "graph.render(f'img/ch_06_icecream')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 187,
   "id": "d563a8e6",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"278pt\" height=\"188pt\"\n",
       " viewBox=\"0.00 0.00 278.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 274,-184 274,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;Y -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.36,-18C92.74,-18 162.7,-18 205.79,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"205.87,-21.5 215.87,-18 205.87,-14.5 205.87,-21.5\"/>\n",
       "</g>\n",
       "<!-- A -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"63\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"63\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">A</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;X -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>A&#45;&gt;X</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M58.51,-144.05C52.37,-119.48 41.28,-75.1 34.02,-46.1\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.36,-45.03 31.54,-36.17 30.57,-46.72 37.36,-45.03\"/>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"153\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"153\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;B -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>A&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M80.35,-148.12C93.8,-137.36 112.62,-122.3 127.74,-110.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"130.08,-112.82 135.7,-103.84 125.71,-107.35 130.08,-112.82\"/>\n",
       "</g>\n",
       "<!-- B&#45;&gt;Y -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>B&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M170.35,-76.12C183.8,-65.36 202.62,-50.3 217.74,-38.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"220.08,-40.82 225.7,-31.84 215.71,-35.35 220.08,-40.82\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x258d2f37250>"
      ]
     },
     "execution_count": 187,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['X', 'Y', 'A', 'B']\n",
    "positions = ['0,0!', '3,0!', '.5,2!', '1.75,1!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(['XY', 'AX', 'AB', 'BY'])\n",
    "\n",
    "graph.render(f'img/ch_06_equivalent_estimands_00')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 191,
   "id": "01d08c33",
   "metadata": {},
   "outputs": [],
   "source": [
    "?graph.edge"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 211,
   "id": "35603147",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"278pt\" height=\"188pt\"\n",
       " viewBox=\"0.00 0.00 278.00 188.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 184)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-184 274,-184 274,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;Y -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.36,-18C92.74,-18 162.7,-18 205.79,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"205.87,-21.5 215.87,-18 205.87,-14.5 205.87,-21.5\"/>\n",
       "</g>\n",
       "<!-- A -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>A</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" cx=\"63\" cy=\"-162\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"63\" y=\"-158.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">A</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;X -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>A&#45;&gt;X</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M58.51,-144.05C52.37,-119.48 41.28,-75.1 34.02,-46.1\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"37.36,-45.03 31.54,-36.17 30.57,-46.72 37.36,-45.03\"/>\n",
       "</g>\n",
       "<!-- B -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>B</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"153\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"153\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">B</text>\n",
       "</g>\n",
       "<!-- A&#45;&gt;B -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>A&#45;&gt;B</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M80.35,-148.12C93.8,-137.36 112.62,-122.3 127.74,-110.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"130.08,-112.82 135.7,-103.84 125.71,-107.35 130.08,-112.82\"/>\n",
       "</g>\n",
       "<!-- B&#45;&gt;Y -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>B&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M170.35,-76.12C183.8,-65.36 202.62,-50.3 217.74,-38.21\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"220.08,-40.82 225.7,-31.84 215.71,-35.35 220.08,-40.82\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x258d4019610>"
      ]
     },
     "execution_count": 211,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "\n",
    "nodes = ['X', 'Y', 'A', 'B']\n",
    "positions = ['0,0!', '3,0!', '.5,2!', '1.75,1!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "\n",
    "# Overwrite style\n",
    "graph.node('A', style='dashed')\n",
    "\n",
    "graph.edges(['XY', 'BY'])\n",
    "graph.edge('A', 'X', style='dashed')\n",
    "graph.edge('A', 'B', style='dashed')\n",
    "\n",
    "graph.render(f'img/ch_06_equivalent_estimands_01')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c1f27fde",
   "metadata": {},
   "source": [
    "## Front-door criterion"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 212,
   "id": "81d6b72e",
   "metadata": {},
   "outputs": [],
   "source": [
    "from dowhy.causal_model import CausalModel"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 219,
   "id": "b13d07aa",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"294pt\" height=\"152pt\"\n",
       " viewBox=\"0.00 0.00 294.19 152.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 148)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-148 290.19,-148 290.19,4 -4,4\"/>\n",
       "<!-- GPS -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>GPS</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"28.6\" cy=\"-18\" rx=\"28.7\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"28.6\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">GPS</text>\n",
       "</g>\n",
       "<!-- Memory -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>Memory</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"244.6\" cy=\"-18\" rx=\"41.69\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"244.6\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Memory</text>\n",
       "</g>\n",
       "<!-- GPS&#45;&gt;Memory -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>GPS&#45;&gt;Memory</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.28,-18C91.74,-18 150.2,-18 192.66,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"192.81,-21.5 202.81,-18 192.81,-14.5 192.81,-21.5\"/>\n",
       "</g>\n",
       "<!-- Motivation -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Motivation</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" cx=\"136.6\" cy=\"-126\" rx=\"50.09\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"136.6\" y=\"-122.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Motivation</text>\n",
       "</g>\n",
       "<!-- Motivation&#45;&gt;GPS -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>Motivation&#45;&gt;GPS</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M119.25,-108.65C100.85,-90.25 71.7,-61.1 51.44,-40.84\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"53.7,-38.15 44.15,-33.56 48.75,-43.1 53.7,-38.15\"/>\n",
       "</g>\n",
       "<!-- Motivation&#45;&gt;Memory -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>Motivation&#45;&gt;Memory</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M153.95,-108.65C172.03,-90.57 200.49,-62.1 220.7,-41.9\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"223.4,-44.15 228,-34.6 218.45,-39.2 223.4,-44.15\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x258d404c550>"
      ]
     },
     "execution_count": 219,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['GPS', 'Memory', 'Motivation']\n",
    "positions = ['0,0!', '3,0!', '1.5,1.5!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "\n",
    "# Overwrite style\n",
    "graph.node('Motivation', style='dashed')\n",
    "\n",
    "graph.edge('Motivation', 'GPS', style='dashed')\n",
    "graph.edge('Motivation', 'Memory', style='dashed')\n",
    "graph.edge('GPS', 'Memory')\n",
    "\n",
    "graph.render(f'img/ch_06_gps_01')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 226,
   "id": "1ee15136",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"438pt\" height=\"152pt\"\n",
       " viewBox=\"0.00 0.00 438.19 152.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 148)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-148 434.19,-148 434.19,4 -4,4\"/>\n",
       "<!-- GPS -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>GPS</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"28.6\" cy=\"-18\" rx=\"28.7\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"28.6\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">GPS</text>\n",
       "</g>\n",
       "<!-- Hippocampal vol. -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>Hippocampal vol.</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"208.6\" cy=\"-18\" rx=\"75.29\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"208.6\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Hippocampal vol.</text>\n",
       "</g>\n",
       "<!-- GPS&#45;&gt;Hippocampal vol. -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>GPS&#45;&gt;Hippocampal vol.</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M57.52,-18C75.43,-18 99.46,-18 123.07,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"123.15,-21.5 133.15,-18 123.15,-14.5 123.15,-21.5\"/>\n",
       "</g>\n",
       "<!-- Memory -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Memory</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"388.6\" cy=\"-18\" rx=\"41.69\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"388.6\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Memory</text>\n",
       "</g>\n",
       "<!-- Hippocampal vol.&#45;&gt;Memory -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>Hippocampal vol.&#45;&gt;Memory</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M284.15,-18C301.75,-18 320.11,-18 336.43,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"336.84,-21.5 346.84,-18 336.84,-14.5 336.84,-21.5\"/>\n",
       "</g>\n",
       "<!-- Motivation -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>Motivation</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" cx=\"208.6\" cy=\"-126\" rx=\"50.09\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"208.6\" y=\"-122.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Motivation</text>\n",
       "</g>\n",
       "<!-- Motivation&#45;&gt;GPS -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>Motivation&#45;&gt;GPS</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M182.81,-110.53C149.79,-90.72 92.72,-56.47 58.03,-35.66\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"59.68,-32.57 49.3,-30.42 56.08,-38.57 59.68,-32.57\"/>\n",
       "</g>\n",
       "<!-- Motivation&#45;&gt;Memory -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>Motivation&#45;&gt;Memory</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M234.39,-110.53C266.16,-91.47 320.19,-59.04 355.13,-38.08\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"357.24,-40.9 364.01,-32.75 353.64,-34.9 357.24,-40.9\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x258d407de50>"
      ]
     },
     "execution_count": 226,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['GPS', 'Hippocampal vol.', 'Memory', 'Motivation']\n",
    "positions = ['0,0!', '2.5,0!', '5,0!', '2.5,1.5!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "\n",
    "# Overwrite style\n",
    "graph.node('Motivation', style='dashed')\n",
    "\n",
    "graph.edge('Motivation', 'GPS', style='dashed')\n",
    "graph.edge('Motivation', 'Memory', style='dashed')\n",
    "graph.edge('GPS', 'Hippocampal vol.')\n",
    "graph.edge('Hippocampal vol.', 'Memory')\n",
    "\n",
    "graph.render(f'img/ch_06_gps_02')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 790,
   "id": "5bb3ff2f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"422pt\" height=\"152pt\"\n",
       " viewBox=\"0.00 0.00 422.00 152.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 148)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-148 418,-148 418,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- Z -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>Z</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"207\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"207\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Z</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;Z -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>X&#45;&gt;Z</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.34,-18C85.18,-18 135.5,-18 169.88,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"169.99,-21.5 179.99,-18 169.99,-14.5 169.99,-21.5\"/>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"387\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"387\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- Z&#45;&gt;Y -->\n",
       "<g id=\"edge4\" class=\"edge\">\n",
       "<title>Z&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M234.34,-18C265.18,-18 315.5,-18 349.88,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"349.99,-21.5 359.99,-18 349.99,-14.5 349.99,-21.5\"/>\n",
       "</g>\n",
       "<!-- U -->\n",
       "<g id=\"node4\" class=\"node\">\n",
       "<title>U</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" cx=\"207\" cy=\"-126\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"207\" y=\"-122.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">U</text>\n",
       "</g>\n",
       "<!-- U&#45;&gt;X -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>U&#45;&gt;X</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M186.7,-113.82C154.75,-94.65 92.59,-57.35 55.95,-35.37\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"57.6,-32.28 47.22,-30.13 54,-38.28 57.6,-32.28\"/>\n",
       "</g>\n",
       "<!-- U&#45;&gt;Y -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>U&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" stroke-dasharray=\"5,2\" d=\"M227.3,-113.82C259.25,-94.65 321.41,-57.35 358.05,-35.37\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"360,-38.28 366.78,-30.13 356.4,-32.28 360,-38.28\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x258e0b0e610>"
      ]
     },
     "execution_count": 790,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['X', 'Z', 'Y', 'U']\n",
    "positions = ['0,0!', '2.5,0!', '5,0!', '2.5,1.5!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "\n",
    "# Overwrite style\n",
    "graph.node('U', style='dashed')\n",
    "\n",
    "graph.edge('U', 'X', style='dashed')\n",
    "graph.edge('U', 'Y', style='dashed')\n",
    "graph.edge('X', 'Z')\n",
    "graph.edge('Z', 'Y')\n",
    "\n",
    "graph.render(f'img/ch_06_gps_03')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "044acde5",
   "metadata": {},
   "source": [
    "### Front-door in practice"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "id": "d2213264",
   "metadata": {},
   "outputs": [],
   "source": [
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "id": "befa88c6",
   "metadata": {},
   "outputs": [],
   "source": [
    "# First, we'll build a structural causal model (SCM)\n",
    "class GPSMemorySCM:\n",
    "    \n",
    "    def __init__(self, random_seed=None):\n",
    "        self.random_seed = random_seed\n",
    "        self.u_x = stats.truncnorm(0, np.infty, scale=5)\n",
    "        self.u_y = stats.norm(scale=2)\n",
    "        self.u_z = stats.norm(scale=2)\n",
    "        self.u = stats.truncnorm(0, np.infty, scale=4)\n",
    "        \n",
    "    def sample(self, sample_size=100, treatment_value=None):\n",
    "        \"\"\"Samples from the SCM\"\"\"\n",
    "        if self.random_seed:\n",
    "            np.random.seed(self.random_seed)\n",
    "        \n",
    "        u_x = self.u_x.rvs(sample_size)\n",
    "        u_y = self.u_y.rvs(sample_size)\n",
    "        u_z = self.u_z.rvs(sample_size)\n",
    "        u = self.u.rvs(sample_size)\n",
    "        \n",
    "        if treatment_value:\n",
    "            gps = np.array([treatment_value]*sample_size)\n",
    "        else:\n",
    "            gps = u_x + 0.7*u\n",
    "            \n",
    "        hippocampus = -0.6*gps + 0.25*u_z\n",
    "        memory = 0.7*hippocampus + 0.25*u\n",
    "        \n",
    "        return gps, hippocampus, memory\n",
    "    \n",
    "    def intervene(self, treatment_value, sample_size=100):\n",
    "        \"\"\"Intervenes on the SCM\"\"\"\n",
    "        return self.sample(treatment_value=treatment_value, sample_size=sample_size)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 78,
   "id": "ad059cf2",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Instantiate the SCM\n",
    "scm = GPSMemorySCM()\n",
    "\n",
    "# Generate observational data\n",
    "gps_obs, hippocampus_obs, memory_obs = scm.sample(600)\n",
    "\n",
    "# Run an experiment\n",
    "treatments = []\n",
    "experiment_results = []\n",
    "\n",
    "# Sample over various treatments\n",
    "for treatment in np.arange(1, 21):\n",
    "    gps_hours, hippocampus, memory = scm.intervene(treatment_value=treatment, sample_size=30)\n",
    "    experiment_results.append(memory)\n",
    "    treatments.append(gps_hours)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 79,
   "id": "5ba8aa21",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAA0wAAAF8CAYAAAD8eDszAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjUuMCwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8/fFQqAAAACXBIWXMAAAsTAAALEwEAmpwYAADIP0lEQVR4nOy9eZxcdZX3/773VlVXVe9L0p09JIQQEhZZA4hsalQYNhfcRkV0xuVxeRwXxmdmHp3Rn6POjDg+4zIqKgqIoyCCyCrIEgIECGsgnZCEbN1Jeq3u2u+9vz/OvV3VS6VvpTvVnfR5v16hqG/XrbpVndxTn+8553OM3t5eF0VRFEVRFEVRFGUU5lSfgKIoiqIoiqIoynRFBZOiKIqiKIqiKEoJVDApiqIoiqIoiqKUQAWToiiKoiiKoihKCVQwKYqiKIqiKIqilEAFk6IoiqIoiqIoSglUMCmKoiiKoiiKopRABZOiKIqiKIqiKEoJVDApiqIoiqIoiqKUQAWToiiKoiiKoihKCVQwKYqiKIqiKIqilEAFk6IoiqIoiqIoSglUMCmKoiiKoiiKopRABZOiKIqiKIqiKEoJVDApiqIoiqIoiqKUQAWToiiKoiiKoihKCVQwKYqiKIqiKIqilEAFk6IoiqIoiqIoSglUMCmKoiiKoiiKopRABZOiKIqiKIqiKEoJVDApiqIoiqIoiqKUQAWToiiKoiiKoihKCVQwKYqiKIqiKIqilEAFk6IoiqIoiqIoSglUMCmKoiiKoiiKopRABZOiKIqiKIqiKEoJVDApiqIoiqIoiqKUQAWToiiKoiiKoihKCVQwKUoAHn74YRoaGvj4xz8+1ady2HD88cdz/PHHT/VpBOKiiy6ioaFhqk9DURRFKYMbbriBhoYGbrjhhqk+lXHxv0d84xvfmOpTUQ4CFUzKjOS5557jU5/6FCeffDJz5sxh3rx5nHHGGXzhC1/g1VdfnerTOyw4/vjjVWQoiqIU0dDQMCnXRV8IzPQv1/o5KNOF0FSfgKJUEtd1+frXv86///u/Y5om5557LhdddBGO4/D000/z4x//mJ/97Gf867/+Kx/5yEem+nQPa/7whz9M9SkoiqIoRzAXX3wxp512Gq2trVN9KsoRjgomZUbx7//+7/zbv/0b8+fP58Ybb+SEE04Y9vOHHnqID3zgA3z+85+nrq6Od73rXVN0poc/Rx111FSfgqIoinIEU19fT319/VSfhjID0JI8Zcbw2muv8c1vfpNQKMRNN900SiwBvOENb+BHP/oRANdccw0DAwOjHrNp0ybe8573sHjxYubOnctb3/pWHnzwwVGPy2QyfP/73+cNb3gDixcvpq2tjVWrVvGOd7xjzOxLZ2cn11xzDSeffDKtra0sWrSIyy+/nL/85S+jHltcpvD4449zxRVXsGjRIhoaGti9ezdNTU2cddZZJT+LD3/4wzQ0NAx77l/96le8//3v58QTT6StrY0FCxawZs0abrrppmHHbt++nYaGBnbs2AEUSlAaGhq46KKLhh5Xqocpk8nw3e9+l7PPPps5c+Ywf/583vjGN3L99dfjuu6oxzc0NHD88ceTTCb5x3/8R1atWsXs2bN53etex3e+850xjwn6XhRFUQ41/jXzoosuoquri8985jMsX76c2bNns3r1aq6//vphj//4xz/OJz/5SQC++c1vDrvGPvzww8Mee9ttt3HppZeyePFiZs+ezcknn8xXvvIV+vv7R52HX0adTqf52te+xute9zpmzZrFNddcw//+3/+bhoYGbrvttjHfw6ZNm2hoaOCtb33rsPV0Os33vvc9zj33XObNm8fcuXM577zzuO6660Zdmw/F53CgHqZnn32WD37wgyxbtoxZs2axcuVKPvnJT7Jt27ZRj/3GN74x9DwPPfQQF110EfPnz2fBggW8853vZOPGjaOO2bx5M1/5ylc477zzWLp0KbNnz2bVqlV8+tOfHoqPypGDZpiUGcOvfvUrcrkcl1566QHNCNasWcNJJ53Ehg0buO2223jf+9439LPt27fzpje9iZUrV3LVVVexe/dufv/733PFFVfws5/9jEsvvXTosR/72Me49dZbOfbYY3nXu95FdXU1e/bs4emnn+aOO+7gkksuGXrsiy++yOWXX86+ffu44IILeNvb3kZ3dzd//OMfueyyy/jP//xP/vqv/3rUuT7xxBP8x3/8B2eddRYf+MAH2LNnD7W1tZx//vncf//9bNiwgZNOOmnYMX19fdx5553Mnz+fc845Z2j985//PMuXL+ess86ira2Nrq4u7rnnHj7+8Y/T3t7OP/3TPwGyo/elL32JH/zgB/T39/OlL31p6DkWLlx4wN9BLpfj7W9/O4888ghHH300H/7wh8lms9xxxx18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88wzueCCC6irq8OyLF577TVuuukmMplMydcKgv/ZlDrneDxOXV3dmM3KdXV1Yx7j71AWB6lKvBdFUZRyKec6diB6enpwXZfu7m6++c1vHvCxAwMDowRTKQvuOXPmcMEFF3DvvfcO9b/29/dzxx13jOp59ePWhg0b2LBhwwFffyST9TmUYrxY47//oLHGL6kfeV5f/vKX+cEPfkBbWxsXXnghc+bMGaqCuPHGG9X44QhDBZMyY1i9ejUPP/wwDzzwAB/84AcP+Fjf9W716tXD1vfu3Tvm4/ft2wcMv9hGo1G+8IUv8IUvfIE9e/bw2GOP8Zvf/Ibbb7+dl19+mbVr1xIOh4eOuf7664cZQQThQNmyU045hWOPPZb77ruPffv20dLSwq9//etRdegA//Vf/0V3dzf/9V//NWwXEeC3v/3tpLjL+e+z1GeYTCbp7+8fFdzLpRLvRVEUZarwr6XHHXcca9euLfv4A8WN9773vdx7773ceOONnHTSSfz+978nlUqN6nn1z+Fv/uZvhjYEpwvjxRq/PL+UcAvCvn37+NGPfsRxxx03prnG7373u4N+bmV6oj1Myozhfe9735C72osvvljycffeey9PP/00jY2No9yCnn322THrqx999FGAMa3KQXburrjiCn79619z+umn097eziuvvALAaaedBohRwWRTXJP+0EMPsXPnzmF16D5+2d9Ygs1/byMpdzewtraWJUuWsHfvXl5++eVRP/f7isYqiSiHg3kviqIo04kDXV9ramo47rjjaG9vH2YgNBm87W1vo6Ghgd/97nfkcrmhDaaRPa+nnnoqpmkekrhVzMFknXz3u5EW7D6TEWu2bduG4zicf/75o+Lprl27xrQuVw5vVDApM4bFixfz+c9/nlwux7vf/W5eeOGFUY955JFH+Ju/+RtATAZG1ln39/eP2k1bv349t956Kw0NDUNuQPv37+fJJ58c9fyZTIa+vj6AodT92972NpYsWcLPfvazIdOIkTz77LNDJRDlcOWVV2JZFjfeeOOQ2cPIrAsULFpHBpj7779/1GwMH79puJyyA98a/R/+4R/I5XJD6/39/fzzP/8zIE25E+Fg3ouiKMp0wr++lioh/+QnP0kul+MTn/gEPT09o36eSCRYv3592a9bVVXFO97xDrq6uvjhD3/IY489NmbPa0tLC1deeSXPP/883/jGN4Z6lorZtWvXmL235TDe5zAWF110EU1NTdx2222jNsluuOEGnnnmGVasWDG0WXkw+HFm3bp1w8TcwMAAn/nMZ8b8PJTDGy3JU2YUX/rSl0in01x77bWce+65nHfeeaxcuRLHcXjmmWd49NFHCYVCfPvb3+Zd73rXqOPPOussrr/+ep566ilWr17N7t27ufXWW3Fdl+9+97tDAmv37t286U1vYtmyZZx00knMmzePwcFB/vznP7Nlyxb+6q/+iqOPPhqQvqZf/epXXHHFFbz3ve/l1FNP5cQTT6S6uppdu3bx3HPP0d7ezkMPPVR2uZpfW33PPfewadOmUXXoPldffTU33HADV111FZdccglz5sxh48aN3HfffVx++eXccssto445//zzeeqpp/jrv/5r3vzmNxONRlmwYAHvfve7S57PJz/5Se677z7uu+8+zjrrLNasWUMul+P2229n9+7dvPvd7x5lKV4uB/NeFEVRphOnn346NTU13HLLLUQiEebPn49hGFx55ZUsXLiQ973vfTz77LP893//NyeddBIXXnghCxcupK+vj9dee421a9dy/vnnD22UlcN73/tefvKTnwxtYo3sefX51re+xauvvso3v/lNbr75Zs466yxaW1vp7Oxk8+bNPPnkk3z961/nmGOOOWSfw1hUV1fz/e9/nw984ANcdtllXHLJJSxevJgXXniBe+65h/r6en7wgx+UZQA1ktbWVt7+9rfzu9/9jnPOOYfzzz+f/v5+HnjgAaLRKMcffzzPP//8QT+/Mv1QwaTMKAzD4Ctf+QqXXXYZP/7xj3n00UeHZjHMmzePj370o3zsYx9j6dKlYx6/aNEirr32Wv7v//2//PSnPyWbzXLyySfzpS99ifPOO2/ocQsXLuTLX/4yDz/8MI8++ij79++nvr6eJUuW8JnPfGZUecNxxx3Ho48+yg9+8APuvPNObrrpJlzXpbW1lWOPPZZPfepTLFu27KDe8/ve9z7uueeeocxacR26z6pVq7j99tv52te+xj333INt26xatYpf/vKX1NfXjyky/u7v/o7+/n7uvPNOvvvd75LP5zn77LMPKJgikQi33HILP/jBD/jNb37DT37yE0zTZMWKFVxzzTVjDuctl4N5L4qiKNOJ+vp6brjhBr7xjW9wyy23DJknrF69ekgofOtb3+LNb34zP/3p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Vq1axeWXX37U15SUlFBVVcXDDz/Mpk2bIp3W9OnTqaio4OGHH+aBBx6IR3NFRGSUUT8jIieyHDcc9Jn9k/oEQvbXMK0sgP/tgPcwhR7SnDAnw8Tt6g7APi94AxAIOun0QrvTxGPppE2YcnJyyMnJOebrurq6AHA6B1aFdzqdBIPBYWmbiIiMfupnRORE9oUc+Di8yazTMslSIGTidiU5oDgJekOQZJnzwdjSZtZBWeGkzbLM+ZY2uHFwn+qohr1K3mg3ZcoUTj31VG699VbeffddqqqqeOCBB9i4cSMXXnhhopsnIiKjnPoZERmNst1wywQoS4UslzneMsHE7VjfBOkumJ4B8zLNMd1l4nYd8IYr7B2SMFnheCydtCNMdrndbp599ln+8z//k6997Wt0dnZyyimn8OCDD7J8+fJEN09EREY59TMiMlplu+Grx16udERNn5nOB+bc7j5OALku+F+fqa4XAHx+6AZmpx/jwkFSwmTDpEmT+P3vf5/oZoiIyAlK/YyInGyGugYKINkBlgOCQbCwCAEOh4nHkqbkiYiIiIhIXH0hp3/dExzfGqgAkOGAVCckESLVac5jXPNBI0wiIiIiIhJffWug1jeZaXg5bpMs2V0DBeBxwoQUaPFDV2+AVI+TbJeJx5ISJhERERERibuhrIECODML/tEFofAoVSg8SnVmVmza10dT8kREREREZNQ5bwwEQwMTpmDIxGNJI0wiIiIiIjLqbG6DJdlQ3QNN7V5y0j1MTDbx0tTYfR0lTCIiIiIiMuo0+czeTWekw0FvL2PT0yPxWNKUPBERERERGXVy3P1V9voMtjS5HUqYRERERERk1IlFaXI7lDCJiIiIiMio01eavCwVMqwAZanmfDClye3QGiYRERERERmV+kqTV7a3UlaYPyxfQyNMIiIiIiIiUShhEhERERERiUIJk4iIiIiISBRWS0tL6NgvExEREREROflohElERERERCQKJUwiIiIiIiJRKGESERERERGJQgmTiIiIiIhIFEqYREREREREolDCFGO/+c1vmDFjBgUFBZxzzjm89dZbiW7SqLF69Wqys7MH/JkyZUqimzXivfnmm3zta19j6tSpZGdn8/jjjw/4eCgUYvXq1ZSXl1NYWMiXv/xlPvroowS1dmQ61j1ctWrVYe/Nz3/+8wlq7ch03333ce655zJ+/HgmTZrEV7/6VXbs2DHgNXovxob6meOnfub4qJ8ZOvUzQ5fIfkYJUwz94Q9/4Pbbb+fWW2/lb3/7GwsWLOArX/kKe/fuTXTTRo2ysjJ27twZ+aNfBI6ts7OTadOmcc8995CSknLYx9esWcODDz7Ij3/8YzZs2EBeXh6XXnop7e3tCWjtyHSsewjwuc99bsB789lnn41zK0e2N954g2uvvZb169ezdu1aXC4Xl1xyCc3NzZHX6L04dOpnhk79zOCpnxk69TNDl8h+RvswxdD555/P6aefzi9+8YtIbM6cOVx88cX8x3/8RwJbNjqsXr2atWvXUlFRkeimjFrFxcX85Cc/4corrwTMk5by8nKuu+46brvtNgC6u7spKyvjv/7rv7j66qsT2dwR6bP3EMyTv4MHD/L0008nsGWjS0dHBxMmTODxxx9n+fLlei/GiPqZoVE/M3TqZ4ZO/UxsxLOf0QhTjHi9XrZu3cp55503IH7eeefx97//PUGtGn2qq6uZOnUqM2bM4JprrqG6ujrRTRrVdu/eTV1d3YD3ZUpKCmeeeabel4NUUVHB5MmTmTt3LjfffDMNDQ2JbtKI1tHRQTAYJDs7G9B7MRbUz8SG+pnY0v/t2FE/Mzjx7GdcQ7paIpqamggEAuTl5Q2I5+XlUV9fn6BWjS7z5s3jV7/6FWVlZTQ2NvLTn/6UZcuWsXnzZsaOHZvo5o1KdXV1AEd8Xx44cCARTRqVPv/5z3PRRRdRWlrKnj17uPvuu1mxYgWvvfYaSUlJiW7eiHT77bczffp0FixYAOi9GAvqZ4ZO/Uzs6f92bKifGbx49jNKmGLMsqwB56FQ6LCYHNkFF1ww4HzevHnMmjWLJ554gm9/+9sJatWJQe/Lofmnf/qnyN9PP/10Zs2axfTp01m/fj0rVqxIYMtGpu9///ts3ryZV155BafTOeBjei8One7h8VM/M3z0vhwa9TODE+9+RlPyYiQnJwen03nYU77GxsbDMl2xJz09nfLycnbt2pXopoxaBQUFAHpfxlhRURHjxo3Te/MIvve97/H888+zdu1aJk6cGInrvTh06mdiT/3M0On/9vBQPxNdIvoZJUwx4vF4mDVrFhs3bhwQ37hxIwsXLkxQq0a3np4eKisrI/8BZPBKS0spKCgY8L7s6emhoqJC78shaGpq4sCBA3pvfsZ3v/tdnnvuOdauXXtYqWa9F4dO/UzsqZ8ZOv3fHh7qZ44sUf2MpuTF0I033sj111/P3LlzWbhwIf/zP/9DbW2tKsTYdOedd/LFL36RkpKSyNzyrq4urrjiikQ3bUTr6OiIPIEKBoPU1NSwbds2xowZw/jx41m1ahU/+9nPKCsrY/Lkydx7772kpaVx2WWXJbjlI8fR7uGYMWO45557WLFiBQUFBezZs4e77rqLvLw8LrzwwgS3fOS47bbbePrpp3nsscfIzs6OzCVPS0sjPT0dy7L0XowB9TNDo37m+KifGTr1M0OXyH5GZcVj7De/+Q1r1qyhrq6OqVOn8qMf/YglS5YkulmjwjXXXMNbb71FU1MTubm5zJs3jzvuuIPy8vJEN21E27RpExdddNFh8SuuuIKHHnqIUCjEPffcwyOPPEJLSwtz587l3nvvZdq0aQlo7ch0tHt43333ceWVV7Jt2zZaW1spKChg6dKl3HHHHZSUlCSgtSNTX5Wiz/rud7/L9773PQC9F2NE/czxUz9zfNTPDJ36maFLZD+jhElERERERCQKrWESERERERGJQgmTiIiIiIhIFEqYREREREREolDCJCIiIiIiEoUSJhERERERkSiUMImIiIiIiEShhElERERERCQKJUwiIiIiIiJRKGESERERERGJQgmTiIiIiIhIFEqYREREREREolDCJCIiIiIiEoUSJhERERERkSiUMImIiIiIiEShhElERERERCQKJUwiIiIiIiJRKGESERERERGJQgmTiIiIiIhIFEqYREREREREolDCJCIiIiIiEoUSJhERERERkSiUMImIiIiIiEShhElERERERCQKV6IbIHKyqampYe3atXz44Ye0traSlZVFSUkJ559/PvPnz8fhMM8xbrrpJurr6wFwuVwUFhby1a9+lQULFgAQCAR47bXX+Otf/0ptbS2BQIC8vDyWLl3KxRdfnLDvT0REEkv9jEhsKWESiaO3336bNWvWsGDBAm644QYKCgpoaWmhqqqKp556ilmzZpGUlERHRwf19fV861vfYvbs2XR3d/Pkk0/yi1/8gl/+8pdkZ2fzwAMP8Mknn3DllVcyadIkent7+fTTT+np6Un0tykiIgmifkYk9pQwicRJdXU1999/P5dddhmXXnppJJ6Xl0dZWRkXXHABlmUBUFVVBcDUqVPJzs4mOzubiy66iL///e/U1NTQ2tpKRUUFt99+O7Nnz458rtLS0qO24amnnuKTTz7hBz/4QST2t7/9jccff5z//u//BqCxsZEnn3ySDz/8kM7OTnJycrj00kv53Oc+B8AjjzzCBx98QGNjI6mpqZx11ll8/etfj7Q9FAqxdu1a/vznP9PT08O5555LamoqH3/8ceTrBoNB1q9fzyuvvEJTUxNFRUVceeWVzJo1a2g3WUTkJKZ+Rv2MDA8lTCJx8uijj1JUVMQll1xyxI/3dQQAu3btIjk5mYKCgkjs4MGDAGRmZtLR0QHAgQMHmDVr1oBrj6a6uvqwzu6zsdWrV3Paaadxxx134PF4qKmpITk5GYDOzk4yMzO58cYbycrKYteuXTz00EOceuqpLFmyBIBf//rXbN++nVWrVpGfn88zzzzDpk2bOPvsswHT0a1Zs4bm5ma++c1vkpuby1tvvcXPf/5z7r//fsaMGWPrexERkYHUz6ifkeGhhEkkDhoaGtixYwc33HDDgCdk119/Pb29vQAsWLCAG2+8ETBP/kpLS7Esi1AoxJ49e3j66acpLy9nwoQJBAIBFi5cyKOPPsqLL77I6aefzty5c1m8eHFkbvqRVFdXs3jx4gGx3bt3M2nSJMA89aupqeHmm29mwoQJABQWFkZem5aWxsqVKyPneXl5vPrqq+zbtw+AnTt3smHDBu655x4mTpwIwBVXXEFFRUXk/K233qKqqop7770Xj8cDwKWXXspf/vIXPvnkExYuXHhc91hE5GSmfkb9jAwfJUwicbB3714AJk+ePCB+1113AfCDH/yAcePGReJVVVXU19fzjW98A7/fj8vl4uyzz+byyy8HwOl08p3vfIeGhgbef/99tm7dygMPPMDGjRu58847j9iG1tZWmpubD3vyt3v3bs477zwAsrOzmTRpEj/84Q9ZuHAhCxcuZObMmZHOt28h8aeffkpLSwuBQIDe3t5I57hx40bmzZsX6bQA3G430D+NY8OGDTQ2NnLdddcNaEdvby8ul34kiYgcD/Uz6mdk+OhdIxIH3d3dgOmA+liWRWFhIZ2dnbS2tkZ+0Hd2dlJXV8dVV13F3LlzSU5OJjs7+4ifNy8vj2XLlrFs2TKee+45nn32WQ4ePMjYsWMPe+3u3btxOp2UlJREYrW1tbS3t0e+tsvl4u677+bDDz/kvffeY82aNUyaNIk777yT/fv3c8cdd3DWWWdxzTXXkJ2dTXd3N3feeWek46qqqopUV+pTU1Mz4OtWV1dz9dVXM3369MPamJOTY/OOiojIodTPqJ+R4aOESSQO+n6I79y5c8DUA4A9e/YA/U/GqqqqCIVCzJ49+7DXHo3X68XlcpGamnrEj+/fv5+8vLwBT9fefPNNPB7PgKeODoeDGTNmMGPGDKZMmcJDDz1EKBSioqKC/Pz8AU/snnvuORwOB+PHj49c+9nqSevWraO4uDjydfs688F8byIicnTqZ9TPyPBRwiQSB6WlpcybN4/f//73+Hw+pk6dimVZ7N69m5dffpmsrKzIU6+qqipSU1MpKio64ud68803ee+991i6dCmFhYV4vV7effddXn75ZS6++OLIwtnPyszMpKWlhaamJsaOHctbb73FSy+9xPjx43E4HPT29vK73/2OM888k8LCQpqbm1m3bh0LFizAsizS09NpaGhg+/btjBkzhoqKCv785z9TXFwcmSM+depUXn/9dWbOnElOTg7r16/nww8/HDBffM6cOTz//POMHTuWCRMm0Nrayo4dOzj11FM544wzYnznRURODupn1M/I8FHCJBIn//Zv/8bLL7/M+vXrefTRR3E6nYwbN47Fixdz7rnnRl5XVVXFqaeeGrUiUW5uLn6/n4cffpi2tjZSU1MZP3483/nOd5g7d27Ur79gwQK2bNnCbbfdRlZWFgsXLmTGjBmkpaUBZjpHe3s7Dz74IB0dHYwZM4bFixdz2WWXAXDuuefy0Ucf8eMf/5i0tDTOO++8AaVmAVauXEl9fT0//elPycjIYPny5RQWFlJWVhZ5zTe+8Q2SkpL47W9/S1tbG5mZmZSXl3PWWWcd970VERH1M33Uz0isWS0tLaFEN0JETkw7d+7khz/8Ib/85S+PON9dRERkKNTPSDxohElEYuall17ijDPOICUlhZ07d/L444+zYsUKdWIiIhIT6mckEZQwiUhMhEIhPvjgA1544QUCgUBkV/Vzzjkn0U0TEZETgPoZSRRNyRMREREREYki+lbNIiIiIiIiJzklTCIiIiIiIlEoYRIREREREYlCCZOIiIiIiEgUSphERERERESiUMIkIiIiIiIShRImERERERGRKJQwiYiIiIiIRKGESUREREREJAolTCIiIiIiIlEoYRIREREREYlCCZOIiIiIiEgUSphERERERESiUMIkIiIiIiIShRImERERERGRKJQwiYiIiIiIRKGESUREREREJAolTCIiIiIiIlEoYRIREREREYlCCZOIiIiIiEgUSphERERERESiUMIkIiIiIiISxf8H2wb8DKm7iLMAAAAASUVORK5CYII=\n",
      "text/plain": [
       "<Figure size 864x288 with 2 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# Plot observational data\n",
    "plt.figure(figsize=(12, 4))\n",
    "\n",
    "# Observational\n",
    "plt.subplot(121)\n",
    "plt.scatter(gps_obs, memory_obs, alpha=.5, color=COLORS[0])\n",
    "plt.xlim(0, 21)\n",
    "plt.ylim(-9, 2)\n",
    "\n",
    "plt.title('\\nObservational\\n')\n",
    "plt.xlabel('\\nGPS usage', alpha=.7, fontsize=14, style='italic')\n",
    "plt.ylabel('\\nSpatial memory change\\n', alpha=.5, fontsize=16, style='italic')\n",
    "\n",
    "\n",
    "# Interventional\n",
    "plt.subplot(122)\n",
    "\n",
    "plt.scatter(treatments, experiment_results, alpha=.5, color=COLORS[0])\n",
    "plt.xlim(0, 21)\n",
    "plt.ylim(-9, 2)\n",
    "\n",
    "plt.title('\\nInterventional\\n')\n",
    "plt.xlabel('\\nGPS usage\\n', alpha=.7, fontsize=14, style='italic')\n",
    "\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b1b28253",
   "metadata": {},
   "source": [
    "### Naive model 1"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 80,
   "id": "676ccc0f",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 80,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "lr_naive = LinearRegression()\n",
    "lr_naive.fit(\n",
    "    X=gps_obs.reshape(-1, 1), \n",
    "    y=memory_obs\n",
    ")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "9a224350",
   "metadata": {},
   "source": [
    "### Experimental model"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 81,
   "id": "8f3008fd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 81,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "treatments_unpack = np.array(treatments).flatten()\n",
    "results_unpack = np.array(experiment_results).flatten()\n",
    "\n",
    "lr_experiment = LinearRegression()\n",
    "lr_experiment.fit(\n",
    "    X=treatments_unpack.reshape(-1, 1), \n",
    "    y=results_unpack\n",
    ")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 82,
   "id": "efede838",
   "metadata": {},
   "outputs": [],
   "source": [
    "X_test = np.arange(1, 21).reshape(-1, 1)\n",
    "\n",
    "preds_naive = lr_naive.predict(X_test) \n",
    "preds_experiment = lr_experiment.predict(X_test)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 83,
   "id": "f2385e46",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.scatter(treatments, experiment_results, alpha=.2, color='gray')\n",
    "plt.plot(X_test, preds_experiment, label='Experimental', color=COLORS[1])\n",
    "plt.plot(X_test, preds_naive, label='Naive', color=COLORS[0])\n",
    "\n",
    "plt.xlabel('\\nGPS usage\\n', alpha=.7, fontsize=14, style='italic')\n",
    "plt.ylabel('\\nSpatial memory change\\n', alpha=.5, fontsize=16, style='italic')\n",
    "\n",
    "plt.legend()\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "id": "c3937fd9",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Naive model:\n",
      "-0.3246130171160016\n",
      "\n",
      "Experiemntal model:\n",
      "-0.4207238110947806\n"
     ]
    }
   ],
   "source": [
    "# Get coefficients\n",
    "print(f'Naive model:\\n{lr_naive.coef_[0]}\\n')\n",
    "print(f'Experiemntal model:\\n{lr_experiment.coef_[0]}')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "07166ef7",
   "metadata": {},
   "source": [
    "#### The Linear Bridge to The Causal Promised Land"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "5923f175",
   "metadata": {},
   "outputs": [],
   "source": [
    "from dowhy.causal_model import CausalModel\n",
    "from sklearn.linear_model import LinearRegression"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "e6645c6d",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Model E(Z|X)\n",
    "lr_zx = LinearRegression()\n",
    "lr_zx.fit(\n",
    "    X=gps_obs.reshape(-1, 1),\n",
    "    y=hippocampus_obs\n",
    ")\n",
    "\n",
    "# Model E(Y|X, Z)E(X)\n",
    "lr_yxz = LinearRegression()\n",
    "lr_yxz.fit(\n",
    "    X=np.array([gps_obs,hippocampus_obs]).T,\n",
    "    y=memory_obs\n",
    ")\n",
    "\n",
    "# Compute the expected causal effect\n",
    "lr_zx.coef_[0] * lr_yxz.coef_[1]"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "f6098658",
   "metadata": {},
   "source": [
    "### Instrumental variables\n",
    "\n",
    "**NOTE**: In the book (p. 121) one of the formulas for regression models is <font color='red'>**incorrect**</font>. \n",
    "\n",
    "The book says:\n",
    "\n",
    "_________\n",
    "\n",
    "\n",
    "*To calculate the causal effect of X on Y in a linear case, all we need to do is fit two linear regression\n",
    "models and compute the ratio of their coefficients!*\n",
    "\n",
    "*The two models are as follows:*\n",
    "\n",
    "*• Y ~ Z*\n",
    "\n",
    "<font color='red'>*• Y ~ X*</font>\n",
    "\n",
    "_____________\n",
    "\n",
    "\n",
    "The <font color='green'>**correct**</font> formulas should be:\n",
    "\n",
    "_____________\n",
    "\n",
    "*The two models are as follows:*\n",
    "\n",
    "*• Y ~ Z*\n",
    "\n",
    "<font color='green'>*• X ~ Z*</font>\n",
    "\n",
    "__________________\n",
    "\n",
    "\n",
    "The **code example** below uses the <font color='green'>**correct formulas**</font>."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "f61ca622",
   "metadata": {},
   "outputs": [],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['Z', 'X', 'Y', 'U']\n",
    "positions = ['0,0!', '1.5,0!', '5,0!', '3.25,1.5!']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "\n",
    "# Overwrite style\n",
    "graph.node('U', style='dashed')\n",
    "\n",
    "graph.edge('U', 'X', style='dashed')\n",
    "graph.edge('U', 'Y', style='dashed')\n",
    "graph.edge('Z', 'X')\n",
    "graph.edge('X', 'Y')\n",
    "\n",
    "graph.render(f'img/ch_06_instrumental_00')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 104,
   "id": "a2d2ae78",
   "metadata": {},
   "outputs": [],
   "source": [
    "# First, we'll build a structural causal model (SCM)\n",
    "class InsrumentalSCM:\n",
    "    \n",
    "    def __init__(self, random_seed=None):\n",
    "        self.random_seed = random_seed\n",
    "        self.u_xy = stats.norm()\n",
    "        self.u_z = stats.norm()\n",
    "        \n",
    "    def sample(self, sample_size=100):\n",
    "        \"\"\"Samples from the SCM\"\"\"\n",
    "        if self.random_seed:\n",
    "            np.random.seed(self.random_seed)\n",
    "        \n",
    "        u_xy = self.u_xy.rvs(sample_size)\n",
    "        u_z = self.u_z.rvs(sample_size)\n",
    "        \n",
    "        z = u_z\n",
    "        x = 0.7*z + 0.2*u_xy\n",
    "        y = 0.8*x + 0.1*u_xy\n",
    "        \n",
    "        return z, x, y"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 105,
   "id": "9530fe0b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# Instantiate the SCM and sample\n",
    "instr_scm = InsrumentalSCM()\n",
    "z, x, y = instr_scm.sample(1000)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "id": "4bba6471",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "LinearRegression()"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Fit regression 1\n",
    "lr_yz = LinearRegression()\n",
    "lr_yz.fit(X=z.reshape(-1, 1), y=y)\n",
    "\n",
    "# Fit regression 2\n",
    "lr_xz = LinearRegression()\n",
    "lr_xz.fit(X=z.reshape(-1, 1), y=x)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "id": "ca19c3bd",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle 0.796483689540479$"
      ],
      "text/plain": [
       "0.7964836895404792"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Compute the causal effect\n",
    "causal_effect = lr_yz.coef_[0] / lr_xz.coef_[0]\n",
    "causal_effect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "id": "c9419a51",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/latex": [
       "$\\displaystyle \\left( 0.683288337199435, \\  0.680285019790731\\right)$"
      ],
      "text/plain": [
       "(0.6832883371994349, 0.6802850197907312)"
      ]
     },
     "execution_count": 121,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# Sanity check\n",
    "random_z = np.random.randn()\n",
    "\n",
    "random_z * .7 * .8, random_z * .7 * causal_effect"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "e7806803",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/svg+xml": [
       "<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
       "<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
       " \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
       "<!-- Generated by graphviz version 2.46.0 (20210118.1747)\n",
       " -->\n",
       "<!-- Pages: 1 -->\n",
       "<svg width=\"278pt\" height=\"116pt\"\n",
       " viewBox=\"0.00 0.00 278.00 116.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
       "<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 112)\">\n",
       "<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-112 274,-112 274,4 -4,4\"/>\n",
       "<!-- X -->\n",
       "<g id=\"node1\" class=\"node\">\n",
       "<title>X</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"27\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"27\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">X</text>\n",
       "</g>\n",
       "<!-- Y -->\n",
       "<g id=\"node3\" class=\"node\">\n",
       "<title>Y</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"243\" cy=\"-18\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"243\" y=\"-14.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">Y</text>\n",
       "</g>\n",
       "<!-- X&#45;&gt;Y -->\n",
       "<g id=\"edge1\" class=\"edge\">\n",
       "<title>X&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M54.36,-18C92.74,-18 162.7,-18 205.79,-18\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"205.87,-21.5 215.87,-18 205.87,-14.5 205.87,-21.5\"/>\n",
       "</g>\n",
       "<!-- W -->\n",
       "<g id=\"node2\" class=\"node\">\n",
       "<title>W</title>\n",
       "<ellipse fill=\"none\" stroke=\"black\" cx=\"135\" cy=\"-90\" rx=\"27\" ry=\"18\"/>\n",
       "<text text-anchor=\"middle\" x=\"135\" y=\"-86.3\" font-family=\"Times New Roman,serif\" font-size=\"14.00\">W</text>\n",
       "</g>\n",
       "<!-- W&#45;&gt;X -->\n",
       "<g id=\"edge3\" class=\"edge\">\n",
       "<title>W&#45;&gt;X</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M115.69,-77.13C98.64,-65.76 73.6,-49.07 54.47,-36.31\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"56.4,-33.4 46.14,-30.76 52.52,-39.22 56.4,-33.4\"/>\n",
       "</g>\n",
       "<!-- W&#45;&gt;Y -->\n",
       "<g id=\"edge2\" class=\"edge\">\n",
       "<title>W&#45;&gt;Y</title>\n",
       "<path fill=\"none\" stroke=\"black\" d=\"M154.31,-77.13C171.36,-65.76 196.4,-49.07 215.53,-36.31\"/>\n",
       "<polygon fill=\"black\" stroke=\"black\" points=\"217.48,-39.22 223.86,-30.76 213.6,-33.4 217.48,-39.22\"/>\n",
       "</g>\n",
       "</g>\n",
       "</svg>\n"
      ],
      "text/plain": [
       "<graphviz.graphs.Digraph at 0x237dd1196a0>"
      ]
     },
     "execution_count": 4,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "graph = graphviz.Digraph(format='png', engine='neato')\n",
    "\n",
    "nodes = ['X', 'W', 'Y']\n",
    "positions = ['1,0!', '2.5,1!', '4,0!']\n",
    "\n",
    "edges = ['XY', 'WY', 'WX']\n",
    "\n",
    "[graph.node(n, pos=pos) for n, pos in zip(nodes, positions)]\n",
    "graph.edges(edges)\n",
    "\n",
    "graph.render(r'C:\\Users\\aleks\\OneDrive\\Pulpit\\BCKDR.png')\n",
    "\n",
    "graph"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "58f15a44",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python [conda env:causal_book_py38]",
   "language": "python",
   "name": "conda-env-causal_book_py38-py"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.13"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
